package cn.pupil.springframework.beans.factory.config;

import cn.pupil.springframework.beans.factory.DisposableBean;

/**
 * @Description: 单例注册接口
 * @Author: pupil
 * @Date: 2024/10/08 下午 10:45
 */
public interface SingletonBeanRegistry {

    /**
     * 获取单例
     * @param beanName bean名
     * @return
     */
    Object getSingleton(String beanName);

    /**
     * 执行销毁单例的销毁方法
     */
    void destroySingletons();

    /**
     * 注册销毁单例
     * @param beanName
     * @param bean
     */
    void registerDisposableBean(String beanName, DisposableBean bean);

    /**
     *  注册单例
     * @param beanName bean名
     * @param singletonObject 单例对象
     */
    void registerSingleton(String beanName, Object singletonObject);

}
